name: Release Charts

on:
  push:
    branches: [canary]
    paths:
      - '.github/helm/**/Chart.yml'

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Checkout Helm chart repo
        uses: actions/checkout@v4
        with:
          repository: toeverything/helm-charts
          path: .helm-chart-repo
          ref: gh-pages
          token: ${{ secrets.HELM_RELEASER_TOKEN }}

      - name: Install Helm
        uses: azure/setup-helm@v4

      - name: Install chart releaser
        run: |
          set -e
          arch="$(dpkg --print-architecture)"
          curl -s https://api.github.com/repos/helm/chart-releaser/releases/latest \
          | yq --indent 0 --no-colors --input-format json --unwrapScalar \
            ".assets[] | select(.name | test("\""^chart-releaser_.+_linux_${arch}\.tar\.gz$"\"")) | .browser_download_url" \
          | xargs curl -SsL \
          | tar zxf - -C /usr/local/bin

      - name: Package charts
        working-directory: .helm-chart-repo
        run: |
          mkdir -p .cr-index
          helm repo add bitnami https://charts.bitnami.com/bitnami
          helm repo update

          helm dependencies build ../.github/helm/affine
          helm dependencies build ../.github/helm/affine-cloud
          cr package ../.github/helm/affine
          cr package ../.github/helm/affine-cloud

      - name: Publish charts
        working-directory: .helm-chart-repo
        run: |
          set -ex
          git config --local user.name "$GITHUB_ACTOR"
          git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com"
          owner=$(cut -d '/' -f 1 <<< '${{ github.repository }}')
          repo=helm-charts
          git_hash=$(git rev-parse HEAD)
          cr upload --commit "$git_hash" \
            --git-repo "$repo" --owner "$owner" \
            --token '${{ secrets.HELM_RELEASER_TOKEN }}' \
            --skip-existing
          cr index --git-repo "$repo" --owner "$owner" \
            --token '${{ secrets.HELM_RELEASER_TOKEN }}' \
            --index-path .cr-index --push
